import { loginAsync } from '../../api/login'

// 用户登录相关验证
const userModule = {
  state: { // 用于判断用户是否保存数据
    userinfo: null, // 用户名信息
    token: null // 前后端身份验证令牌机制
  },
  mutations: {
    // 方法， 同步跟新状态数据
    SET_USERINFO(state, payload) {
      state.userinfo = payload
    },
    SET_TOKEN(state, payload) {
      state.token = payload
    },
    RESET(state) { // 重置用户信息
      state.userinfo = null
      state.token = null
    }
  },
  actions: {
    // actions 方法，实现用户异步登录，将登录成功的状态数据
    // 保存早 state 中（在action 中提交 mutation 来更新状态）
    login(store, payload) {
      return loginAsync(payload)
        .then(data => { // 登陆成功
          console.log('成功', data)
          const { username, nickname, avatarUrl, token } = data
          store.commit('SET_USERINFO', { username, nickname, avatarUrl })
          store.commit('SET_TOKEN', token)
        })
        .catch(err => { // 异常
          console.log('异常', err)
          store.commit('RESET')
        })
    }
  }
}
export default userModule
